import { fileURLToPath, URL } from 'node:url'

import { defineConfig, loadEnv } from 'vite'
import vue from '@vitejs/plugin-vue'

// import myPluginZip from './vite-plugin-auto-zip'
import myPluginVersionUpdate from './vite-plugin-auto-version-update'

import pxtovw from 'postcss-px-to-viewport'
const loder_pxtovw = pxtovw({
  // 视窗的宽度，对应的是我们设计稿的宽度，
  viewportWidth: 375,
  // 指定`px`转换为视窗单位值的小数位数
  unitPrecision: 3,
  // 指定需要转换成的视窗单位，建议使用vw
  viewportUnit: 'vw',
  // 指定不转换为视窗单位的类，可以自定义，可以无限添加,建议定义一至两个通用的类名
  selectorBlackList: ['.ignore'],
  // 小于或等于`1px`不转换为视窗单位，你也可以设置为你想要的值
  minPixelValue: 1,
})
function getDate() {
  var time = new Date()
  const y = time.getFullYear()
  const m = time.getMonth() + 1 < 10 ? '0' + (time.getMonth() + 1) : time.getMonth() + 1
  const d = time.getDate() < 10 ? '0' + time.getDate() : time.getDate()
  return `${y}${m}${d}`
}

// https://vitejs.dev/config/
export default defineConfig(({ mode }) => {
  //检查process.cwd()路径下环境文件
  let env = loadEnv(mode, process.cwd())
  let path = env.VITE_BASE_ENV === 'production' ? 'prod' : 'test'
  const now = new Date().getTime()
  return {
    base: '/yjx',
    build: {
      outDir: 'dist',
      rollupOptions: {
        output: {
          //静态资源分类打包
          chunkFileNames: 'static/js/[name]-[hash].js',
          entryFileNames: 'static/js/[name]-[hash].js',
          assetFileNames: 'static/[ext]/[name]-[hash].[ext]',
          manualChunks(id) {
            //静态资源拆分打包
            if (id.includes('node_modules')) {
              return id.toString().split('node_modules/')[1].split('/')[0].toString()
            }
          },
        },
      },
    },
    define: {
      // 定义全局变量
      __APP_VERSION__: now,
    },
    plugins: [
      vue(),
      // 自动生成版本更新文件
      myPluginVersionUpdate({ version: now }),
      // 自动打包生成dist文件， dist_web_test_2023081001 生成的包名
      // myPluginZip(`dist_web_${path}_${getDate()}`),
    ],
    css: {
      postcss: {
        plugins: [loder_pxtovw],
      },
    },
    resolve: {
      alias: {
        '@': fileURLToPath(new URL('./src', import.meta.url)),
      },
    },
    server: {
      port: 9000, // 设置服务启动端口号
      open: true, // 设置服务启动时是否自动打开浏览器
      cors: true, // 允许跨域
      proxy: {
        '/proxy': {
          target: env.VITE_BASE_API,
          changeOrigin: true,
          rewrite: (path) => path.replace(/^\/proxy/, ''),
        },
        '/geo': {
          target: env.VITE_BASE_static,
          changeOrigin: true,
          rewrite: (path) => path.replace(/^\/geo/, ''),
        },
        // 获取网站相对路径资源类请求
        '/relative_path': {
          target: env.VITE_BASE_RELATIVE_PATH,
          changeOrigin: true,
          rewrite: (path) => path.replace(/^\/relative_path/, ''),
        },
      },
    },
  }
})
